﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Sistema.Modelo.Financeiro;
namespace Sistema.Dao.Financeiro
{
    class daoCartao
    {
        Mensagens men = new Mensagens();
        SqlDataAdapter dr;
        String Mensagem;
        ///
        ///
        ///
        ///
        public String getMensagem()//metodo de retorno de resultado de pesquisa
        {
            return Mensagem;
        }
        ///
        ///
        ///
        ///
        public SqlDataAdapter getSelect()//metodo de retorno de resultado de pesquisa
        {
            return dr;
        }
        ///
        ///
        ///
        ///
        public void SelecionarCartao(String Busca, int selecao)
        {
            try
            {
                String[] stringconecao = new String[5];//string em array para armazenar mais de um tipo de selecao
                stringconecao[0] = "SELECT * FROM Cartoes ORDER BY Data_Venda;";
                stringconecao[1] = "SELECT * FROM Cartoes WHERE Bancos_Codigo like '%" + Busca + "%' ORDER BY Data_Venda;";
                stringconecao[2] = "SELECT * FROM Cartoes WHERE Bancos_Descricao like '%" + Busca + "%' ORDER BY Data_Venda;";

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL = stringconecao[selecao];
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);
                this.dr = new SqlDataAdapter(crm);
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }
        }
        ///
        ///
        ///
        ///
        public void ExecutarProcedimentoCartao(modCartao a, int Procedimento)
        {
            try
            {
                int Cartoes_Codigo = Convert.ToInt16(null);
                int Plano_Contas_Codigo = Convert.ToInt16(null);
                int Plano_Pagamento_CODIGO = Convert.ToInt16(null);
                int Pessoas_Codigo = Convert.ToInt16(null);
                int Bandeira_Codigo = Convert.ToInt16(null);
                int Categoria_Cartao_Codigo = Convert.ToInt16(null);
                String Cartoes_Numero = null;
                DateTime Data_Venda = Convert.ToDateTime(null);
                DateTime Data_Parcela = Convert.ToDateTime(null);
                int Numero_Parcelas = Convert.ToInt16(null);
                int Parcela = Convert.ToInt16(null);
                Double Valor_Total = Convert.ToDouble(null);
                Double Valor_Parcela = Convert.ToDouble(null);
                Double Valor_Receber = Convert.ToDouble(null);
                Double Valor_Pago_a_Bandeira = Convert.ToDouble(null);
                String Situacao = null;
                DateTime Data_Cadastro = Convert.ToDateTime(null);
                int Central_Custo_Codigo = Convert.ToInt16(null);
                String Observacao = null;

                if (Procedimento == 1)
                {//Cadastrar

                    Plano_Contas_Codigo = a.Plano_Contas_Codigo;
                    Plano_Pagamento_CODIGO = a.Plano_Pagamento_CODIGO;
                    Pessoas_Codigo = a.Pessoas_Codigo;
                    Bandeira_Codigo = a.Bandeira_Codigo;
                    Categoria_Cartao_Codigo = a.Categoria_Cartao_Codigo;
                    Cartoes_Numero = a.Cartoes_Numero;
                    Data_Venda = a.Data_Venda;
                    Data_Parcela = a.Data_Parcela;
                    Numero_Parcelas = a.Numero_Parcelas;
                    Parcela = a.Parcela;
                    Valor_Total = a.Valor_Total;
                    Valor_Parcela = a.Valor_Parcela;
                    Valor_Receber = a.Valor_Receber;
                    Valor_Pago_a_Bandeira = a.Valor_Pago_a_Bandeira;
                    Situacao = a.Situacao;
                    Data_Cadastro = a.Data_Cadastro;
                    Central_Custo_Codigo = a.Central_Custo_Codigo;
                    Observacao = a.Observacao;
                }
                ////////////////////
                else if (Procedimento == 2)
                {//Alterar
                    Cartoes_Codigo = a.Cartoes_Codigo;
                    Plano_Contas_Codigo = a.Plano_Contas_Codigo;
                    Plano_Pagamento_CODIGO = a.Plano_Pagamento_CODIGO;
                    Pessoas_Codigo = a.Pessoas_Codigo;
                    Bandeira_Codigo = a.Bandeira_Codigo;
                    Categoria_Cartao_Codigo = a.Categoria_Cartao_Codigo;
                    Cartoes_Numero = a.Cartoes_Numero;
                    Data_Venda = a.Data_Venda;
                    Data_Parcela = a.Data_Parcela;
                    Numero_Parcelas = a.Numero_Parcelas;
                    Parcela = a.Parcela;
                    Valor_Total = a.Valor_Total;
                    Valor_Parcela = a.Valor_Parcela;
                    Valor_Receber = a.Valor_Receber;
                    Valor_Pago_a_Bandeira = a.Valor_Pago_a_Bandeira;
                    Situacao = a.Situacao;
                    Data_Cadastro = a.Data_Cadastro;
                    Central_Custo_Codigo = a.Central_Custo_Codigo;
                    Observacao = a.Observacao;
                }
                ////////////////////
                else if (Procedimento == 3)
                {//Excluir
                    Cartoes_Codigo = a.Cartoes_Codigo;
                    Plano_Contas_Codigo = a.Plano_Contas_Codigo;
                    Plano_Pagamento_CODIGO = a.Plano_Pagamento_CODIGO;
                    Pessoas_Codigo = a.Pessoas_Codigo;
                    Bandeira_Codigo = a.Bandeira_Codigo;
                    Categoria_Cartao_Codigo = a.Categoria_Cartao_Codigo;
                    Cartoes_Numero = a.Cartoes_Numero;
                    Data_Venda = a.Data_Venda;
                    Data_Parcela = a.Data_Parcela;
                    Numero_Parcelas = a.Numero_Parcelas;
                    Parcela = a.Parcela;
                    Valor_Total = a.Valor_Total;
                    Valor_Parcela = a.Valor_Parcela;
                    Valor_Receber = a.Valor_Receber;
                    Valor_Pago_a_Bandeira = a.Valor_Pago_a_Bandeira;
                    Situacao = a.Situacao;
                    Data_Cadastro = a.Data_Cadastro;
                    Central_Custo_Codigo = a.Central_Custo_Codigo;
                    Observacao = a.Observacao;
                }
                ////////////////////

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL;//variavel passa o nome da procidore
                mSQL = "SP_Update_Cartao";
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);

                crm.CommandType = CommandType.StoredProcedure;
                crm.Parameters.Add("@Cartoes_Codigo", SqlDbType.VarChar).Value = Cartoes_Codigo;
                crm.Parameters.Add("@Plano_Contas_Codigo", SqlDbType.VarChar).Value = Plano_Contas_Codigo;
                crm.Parameters.Add("@Plano_Pagamento_CODIGO", SqlDbType.VarChar).Value = Plano_Pagamento_CODIGO;
                crm.Parameters.Add("@Pessoas_Codigo", SqlDbType.VarChar).Value = Pessoas_Codigo;
                crm.Parameters.Add("@Bandeira_Codigo", SqlDbType.VarChar).Value = Bandeira_Codigo;
                crm.Parameters.Add("@Categoria_Cartao_Codigo", SqlDbType.VarChar).Value = Categoria_Cartao_Codigo;
                crm.Parameters.Add("@Cartoes_Numero", SqlDbType.VarChar).Value = Cartoes_Numero;
                crm.Parameters.Add("@Data_Venda", SqlDbType.VarChar).Value = Data_Venda;
                crm.Parameters.Add("@Data_Parcela", SqlDbType.VarChar).Value = Data_Parcela;
                crm.Parameters.Add("@Numero_Parcelas", SqlDbType.VarChar).Value = Numero_Parcelas;
                crm.Parameters.Add("@Parcela", SqlDbType.VarChar).Value = Parcela;
                crm.Parameters.Add("@Valor_Total", SqlDbType.VarChar).Value = Valor_Total;
                crm.Parameters.Add("@Valor_Parcela", SqlDbType.VarChar).Value = Valor_Parcela;
                crm.Parameters.Add("@Valor_Receber", SqlDbType.VarChar).Value = Valor_Receber;
                crm.Parameters.Add("@Valor_Pago_a_Bandeira", SqlDbType.VarChar).Value = Valor_Pago_a_Bandeira;
                crm.Parameters.Add("@Situacao", SqlDbType.VarChar).Value = Situacao;
                crm.Parameters.Add("@Data_Cadastro", SqlDbType.VarChar).Value = "";
                crm.Parameters.Add("@Central_Custo_Codigo", SqlDbType.VarChar).Value = Central_Custo_Codigo;
                crm.Parameters.Add("@Observacao", SqlDbType.VarChar).Value = Observacao;

                crm.Parameters.Add("@Operacao", SqlDbType.VarChar).Value = Procedimento;
                crm.Parameters.Add("@Novocodigo", SqlDbType.VarChar).Value = "";
                crm.Parameters.Add("@Retorno", SqlDbType.VarChar).Value = "";

                var returnParameter = crm.Parameters.Add("@Retorno", SqlDbType.Int);//comando para selecionar o retorno da procedimento
                returnParameter.Direction = ParameterDirection.ReturnValue;//retorno do procedimento

                crm.ExecuteNonQuery();
                Mensagem = men.getGerarMensagem(returnParameter.Scale.ToString());//recebendo a variavel
                sqlconn.Close();


            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }

        }
        ///
        ///
        ///
        ///
    }
}
